package com.xinqi.modules.exam.paper.dto.req;

import com.xinqi.modules.exam.paper.enums.ExamRandomStrategyEnum;
import com.xinqi.modules.exam.paper.enums.IsPublishAnswerEnum;
import com.xinqi.modules.exam.paper.enums.IsPublishScoreEnum;
import com.xinqi.modules.exam.paper.enums.MultipleOptionScoreEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 课程测评发布-对象
 *
 * @author: linkai
 * @date: 2023/07/02
 */
@Data
@Schema(description = "课程测评发布-对象")
public class CourseExamPaperReleaseDTO implements Serializable {
    /**
     * 课程测评ID
     */
    @Schema(description = "课程测评ID", example = "10001", hidden = true)
    private Long examPaperId;
    /**
     * 测评名称
     */
    @Schema(description = "测评名称", example = "语文测评考试")
    private String examPaperName;
    /**
     * 测评详情
     */
    @Schema(description = "测评详情", example = "语文测评考试详情")
    private String examPaperContent;
    /**
     * 所属章节ID
     */
    @Schema(description = "所属章节ID", example = "")
    private Long chapterId;
    /**
     * 是否定时发布
     */
    @Schema(description = "是否定时发布", example = "0")
    private Integer isTimedRelease;
    /**
     * 发布时间
     */
    @Schema(description = "发布时间", example = "2023-07-02 10:10:10")
    private LocalDateTime releaseTime;
    /**
     * 开始时间
     */
    @Schema(description = "开始时间", example = "2023-07-02 10:10:10")
    private LocalDateTime startTime;
    /**
     * 截止时间
     */
    @Schema(description = "截止时间", example = "2023-07-02 10:10:10")
    private LocalDateTime endTime;
    /**
     * 是否限制答题时间
     */
    @Schema(description = "是否限制答题时间", example = "0")
    private Integer isLimitAnswerTime;
    /**
     * 答题时间长（分钟）
     */
    @Schema(description = "答题时间长（分钟）", example = "0")
    private Long answerDuration;
    /**
     * 截止进入时间
     */
    @Schema(description = "截止进入时间", example = "2023-07-02 00:00:00")
    private LocalDateTime cutoffEntryTime;
    /**
     * 是否允许交卷后查看试卷
     */
    @Schema(description = "是否允许交卷后查看试卷", example = "0")
    private Integer isSubmitView;
    /**
     * 是否公布成绩，0:不公布； 1:到截止时间公布；2:批阅后公布；
     */
    @Schema(description = "是否公布成绩，0:不公布； 1:到截止时间公布；2:批阅后公布；", example = "")
    private IsPublishScoreEnum isPublishScore;
    /**
     * 是否公布答案，0:不公布； 1:到截止时间公布；
     */
    @Schema(description = "是否公布答案，0:不公布； 1:到截止时间公布；", example = "")
    private IsPublishAnswerEnum isPublishAnswer;
    /**
     * 答题样式，1-卡片式；2-一页式
     */
    @Schema(description = "答题样式，1-卡片式；2-一页式", example = "1")
    private Integer answerStyle;
    /**
     * 答题中返回上一题
     */
    @Schema(description = "答题中返回上一题", example = "1")
    private Integer isReturnPrev;
    /**
     * 多选题得分
     */
    @Schema(description = "测评多选得分, 1:少选时，得一半分数； 2:多选、少选、选错不得分；", example = "1")
    private MultipleOptionScoreEnum multipleOptionScore;
    /**
     * 题目随机策略
     */
    @Schema(description = "题目随机策略，1:不随机； 2:全部题目顺序随机； 3:同一题型内题目顺序随机", example = "0")
    private ExamRandomStrategyEnum examRandomStrategy;
    /**
     * 是否同步到其他班级
     */
    @Schema(description = "是否同步到其他班级", example = "")
    private Integer isSendClass;
    /**
     * 发送到其他班级
     */
    @Schema(description = "发送到其他班级", example = "")
    private List<Long> sendClass;
    /**
     * 是否限制切屏
     */
    @Schema(description = "是否限制切屏", example = "1")
    private Integer isLimitScreenSwitch;
    /**
     * 限制切屏次数
     */
    @Schema(description = "限制切屏次数", example = "2")
    private Integer limitScreenSwitchNum;
    /**
     * 扩展字段
     */
    @Schema(description = "扩展字段", example = "", hidden = true)
    private String extend;
}
